package com.xianyun.site.iblog.gatewayimpl.database;

import com.xianyun.site.iblog.gatewayimpl.database.domainobject.SystemUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 用户信息Mapper
 * @author mac_zyj
 */
@Mapper
public interface SystemUserMapper {
    /**
     * 根据Id获取用户
     * @param id 主键
     * @return 用户信息
     */
    SystemUserDO getSystemUserById(Long id);

    /**
     * 根据用户UniqueId 获取
     * @param userUniquePath 维护唯一路径
     * @return 用户ID
     */
    Integer getUserIdByUserUniquePath(String userUniquePath);

    /**
     * 根据三方编号查询用户
     * @param socialId 三方编号
     * @return 用户信息
     */
    SystemUserDO getSystemUserBySocialId(int socialId);

    /**
     *根据唯一编号和来源查找用户
     * @param uuid 唯一编号
     * @param source 来源
     * @return 用户信息
     */
    SystemUserDO getSystemUserByUuidAndSource(@Param("uuid") String uuid, @Param("source") String source);

    /***
     * 根据用户Id查询用户
     * @param userId 用户编号
     * @return 用户
     */
    SystemUserDO getSystemUserByUserId(String userId);

    /**
     * 保存用户
     * @param systemUser 用户
     */
    void saveSystemUser(SystemUserDO systemUser);

    /**
     * 保存用户社交关联
     * @param socialId 三方ID
     * @param uid 用户ID
     */
    void saveSocialLinkUser(@Param("socialId") int socialId,@Param("uid") int uid);

    /**
     * 查询客户列表
     *
     * @param systemUser 客户
     * @return 客户集合
     */
    List<SystemUserDO> selectSystemUserListBySort(SystemUserDO systemUser);

    /**
     * 查询客户
     *
     * @param id 客户ID
     * @return 客户
     */
    SystemUserDO getSystemUserVoById(Long id);


    /**
     * 根据用户名查询用户
     * @param name 用户名称
     * @return 用户
     */
    SystemUserDO getSystemUserByName(String name);
    /**
     * 查询客户
     * @param mobile 手机号
     * @return 用户
     */
    SystemUserDO getSystemUserByMobile(String mobile);
    /**
     * 查询客户
     * @param email 邮件地址
     * @return 用户
     */
    SystemUserDO getSystemUserByEmail(String email);

    /**
     * 修改客户
     *
     * @param systemUser 客户
     * @return 结果
     */
    int updateSystemUser(SystemUserDO systemUser);

    /**
     * 修改用户私要信息
     * @param systemUser 用户
     * @return 结果
     */
    int updateSystemUserCondition(SystemUserDO systemUser);
    /**
     * 删除客户
     *
     * @param id 客户ID
     * @return 结果
     */
    int deleteSystemUserById(Long id);

    /**
     * 批量删除客户
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteSystemUserByIds(String[] ids);
}
